package com.cn.wanxi.service;

import com.cn.wanxi.dao.NavDao;
import com.cn.wanxi.model.NavModel;

import java.util.ArrayList;
import java.util.List;

public class NavService {

    /**
     * 返回导航数据
     *
     * @return
     */
    public NavModel[] getNavArray() {
        NavModel[] navArray = new NavModel[6];

//        navDao.setTitles();
//        NavModel model = new NavModel();
//        model.setHref(navDao.hrefs[0]);
//        model.setTitle(navDao.titles[0]);
//        navArray[0] = model;

//
//        NavModel model1 = new NavModel();
//        model1.setHref(navDao.hrefs[1]);
//        model1.setTitle(navDao.titles[1]);
//        navArray[1] = model1;


//        如果代码差不多，就会想到封装
//        因为这里是六个对象 ，所以这里需要写六次，代码量非常大。所以这里引入java语法  for
//以后写代码的时候，代码里面不要出现固定数字，魔法数字
        NavDao navDao = new NavDao();//对象实例化
        int leng = navDao.hrefs.length;
        String[] hrefs = navDao.hrefs;
        String[] titles = navDao.titles;
        for (int i = 0; i < leng; i++) {
            NavModel model = new NavModel();
            model.setHref(hrefs[i]);
            model.setTitle(titles[i]);
            navArray[i] = model;
        }
        return navArray;
    }

//    private static NavDao navDao = new NavDao();

//    public NavService() {
//        System.out.println("NavService");
//    }
//
//    {
//        System.out.println("NavService代码块");
//    }
//
//    static {
//        System.out.println("NavServicestatic代码块");
//    }

    public static void main(String[] args) {
        new NavService().getNavArray();
//        静态代码块只要加载的时候会执行
//        new NavService();
        /**
         * 方法的执行顺序
         * 1.永远static先执行
         * 2.如果当前类有几个static的时候，按住先后顺序执行
         * 3.先执行属性里面有引用类型的方法
         * 4.静态代码块比代码块先执行
         * 5.静态代码块在加载类的时候执行
         * 6.代码块和构造方法是在调用类的执行
         * 7.代码块比构造方法先执行
         *
         * 静态代码块 ----代码块----构造方法
         */
    }

    public List<NavModel> getNavModelList() {
//        用到借口：接口的目的：作用什么？实现多态
//灵活性更高
//        数组和集合之间的区别？
        List<NavModel> navModelList = new ArrayList<>();
        NavDao navDao = new NavDao();//对象实例化
        int leng = navDao.hrefsList.size();//如果是数组，长度用length，如果是集合用size

        List<String> hrefs = navDao.hrefsList;
        String[] titles = navDao.titles;
        for (int i = 0; i < leng; i++) {
            NavModel model = new NavModel();
            model.setHref(hrefs.get(i));
            model.setTitle(titles[i]);
            navModelList.add(model);
        }

        return navModelList;
    }
}
